var RedBorderEffect = GObject.registerClass(
class RedBorderEffect extends Clutter.Effect {
+ _init() {
+ super._init();
+ this._pipeline = null;
+ }
+
vfunc_paint(paintContext) {
+ let framebuffer = paintContext.get_framebuffer();
+ let coglContext = framebuffer.get_context();
let actor = this.get_actor();
actor.continue_paint(paintContext);
- let color = new Cogl.Color();
- color.init_from_4ub(0xff, 0, 0, 0xc4);
- Cogl.set_source_color(color);
+ if (!this._pipeline) {
+ let color = new Cogl.Color();
+ color.init_from_4ub(0xff, 0, 0, 0xc4);
+
+ this._pipeline = new Cogl.Pipeline(coglContext);
+ this._pipeline.set_color(color);
+ }
let alloc = actor.get_allocation_box();
let width = 2;
// clockwise order
- Cogl.rectangle(0, 0, alloc.get_width(), width);
- Cogl.rectangle(alloc.get_width() - width, width,
- alloc.get_width(), alloc.get_height());
- Cogl.rectangle(0, alloc.get_height(),
- alloc.get_width() - width, alloc.get_height() - width);
- Cogl.rectangle(0, alloc.get_height() - width,
- width, width);
+ framebuffer.draw_rectangle(this._pipeline,
+ 0, 0, alloc.get_width(), width);
+ framebuffer.draw_rectangle(this._pipeline,
+ alloc.get_width() - width, width,
+ alloc.get_width(), alloc.get_height());
+ framebuffer.draw_rectangle(this._pipeline,
+ 0, alloc.get_height(),
+ alloc.get_width() - width, alloc.get_height() - width);
+ framebuffer.draw_rectangle(this._pipeline,
+ 0, alloc.get_height() - width,
+ width, width);
}
});
ShellGLSLEffectPrivate *priv;
ClutterActor *actor;
guint8 paint_opacity;
+ CoglFramebuffer *framebuffer;
priv = shell_glsl_effect_get_instance_private (self);
paint_opacity,
paint_opacity,
paint_opacity);
- cogl_framebuffer_draw_rectangle (cogl_get_draw_framebuffer (),
+
+ framebuffer = clutter_paint_context_get_framebuffer (paint_context);
+ cogl_framebuffer_draw_rectangle (framebuffer,
priv->pipeline,
0, 0,
priv->tex_width, priv->tex_height);
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
ClutterActor *actor;
guint8 paint_opacity;
- CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
+ CoglFramebuffer *fb = clutter_paint_context_get_framebuffer (paint_context);
actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
paint_opacity = clutter_actor_get_paint_opacity (actor);
ClutterActorBox allocation_box;
ClutterActorBox content_box;
ClutterActor *child;
- CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
+ CoglFramebuffer *fb = clutter_paint_context_get_framebuffer (paint_context);
get_border_paint_offsets (self, &x, &y);
if (x != 0 || y != 0)
ClutterActorBox allocation_box;
ClutterActorBox content_box;
ClutterActor *child;
- CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
+ CoglFramebuffer *fb = clutter_pick_context_get_framebuffer (pick_context);
get_border_paint_offsets (self, &x, &y);
if (x != 0 || y != 0)
}
if (priv->text_shadow_material != NULL)
- _st_paint_shadow_with_opacity (shadow_spec,
- cogl_get_draw_framebuffer (),
- priv->text_shadow_material,
- &allocation,
- clutter_actor_get_paint_opacity (priv->entry));
+ {
+ CoglFramebuffer *framebuffer =
+ clutter_paint_context_get_framebuffer (paint_context);
+
+ _st_paint_shadow_with_opacity (shadow_spec,
+ framebuffer,
+ priv->text_shadow_material,
+ &allocation,
+ clutter_actor_get_paint_opacity (priv->entry));
+ }
}
/* Since we paint the background ourselves, chain to the parent class
if (priv->shadow_pipeline)
{
ClutterActorBox allocation;
+ CoglFramebuffer *framebuffer;
clutter_actor_get_allocation_box (priv->icon_texture, &allocation);
+ framebuffer = clutter_paint_context_get_framebuffer (paint_context);
_st_paint_shadow_with_opacity (priv->shadow_spec,
- cogl_get_draw_framebuffer (),
+ framebuffer,
priv->shadow_pipeline,
&allocation,
clutter_actor_get_paint_opacity (priv->icon_texture));
}
if (priv->text_shadow_pipeline != NULL)
- _st_paint_shadow_with_opacity (shadow_spec,
- cogl_get_draw_framebuffer (),
- priv->text_shadow_pipeline,
- &allocation,
- clutter_actor_get_paint_opacity (priv->label));
+ {
+ CoglFramebuffer *framebuffer;
+
+ framebuffer =
+ clutter_paint_context_get_framebuffer (paint_context);
+ _st_paint_shadow_with_opacity (shadow_spec,
+ framebuffer,
+ priv->text_shadow_pipeline,
+ &allocation,
+ clutter_actor_get_paint_opacity (priv->label));
+ }
}
}
cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
clutter_actor_get_position (actor, &x, &y);
- /* XXX: There's no way to render a ClutterActor to an offscreen
- * as it uses the implicit API. */
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
- cogl_push_framebuffer (fb);
- G_GNUC_END_IGNORE_DEPRECATIONS;
-
cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
cogl_framebuffer_translate (fb, -x, -y, 0);
cogl_framebuffer_orthographic (fb, 0, 0, width, height, 0, 1.0);
clutter_actor_paint (actor, paint_context);
clutter_paint_context_destroy (paint_context);
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
- cogl_pop_framebuffer ();
- G_GNUC_END_IGNORE_DEPRECATIONS;
-
clutter_actor_set_opacity_override (actor, -1);
cogl_object_unref (fb);
if (!st_widget_get_resource_scale (widget, &resource_scale))
return;
- framebuffer = cogl_get_draw_framebuffer ();
+ framebuffer = clutter_paint_context_get_framebuffer (paint_context);
theme_node = st_widget_get_theme_node (widget);
clutter_actor_get_allocation_box (CLUTTER_ACTOR (widget), &allocation);
const UI = imports.testcommon.ui;
-const { Cogl, Clutter, St } = imports.gi;
+const { Cogl, Clutter, Meta, St } = imports.gi;
function test() {
- let stage = new Clutter.Stage({ user_resizable: true, width: 1024, height: 768 });
+ Meta.init();
+
+ let stage = Meta.get_backend().get_stage();
UI.init(stage);
let vbox = new St.BoxLayout({ style: 'background: #ffee88;' });
if (useCairo)
obin.style = 'border: 3px solid green;';
else
- obin.connect_after('paint', actor => {
- Cogl.set_source_color4f(0, 1, 0, 1);
+ obin.connect_after('paint', (actor, paintContext) => {
+ let framebuffer = paintContext.get_framebuffer();
+ let coglContext = framebuffer.get_context();
+
+ let pipeline = new Cogl.Pipeline(coglContext);
+ pipeline.set_color4f(0, 1, 0, 1);
let alloc = actor.get_allocation_box();
let width = 3;
// clockwise order
- Cogl.rectangle(0, 0, alloc.get_width(), width);
- Cogl.rectangle(alloc.get_width() - width, width,
- alloc.get_width(), alloc.get_height());
- Cogl.rectangle(0, alloc.get_height(),
- alloc.get_width() - width, alloc.get_height() - width);
- Cogl.rectangle(0, alloc.get_height() - width,
- width, width);
+ framebuffer.draw_rectangle(pipeline,
+ 0, 0, alloc.get_width(), width);
+ framebuffer.draw_rectangle(pipeline,
+ alloc.get_width() - width, width,
+ alloc.get_width(), alloc.get_height());
+ framebuffer.draw_rectangle(pipeline,
+ 0,
+ alloc.get_height(),
+ alloc.get_width() - width,
+ alloc.get_height() - width);
+ framebuffer.draw_rectangle(pipeline,
+ 0,
+ alloc.get_height() - width,
+ width,
+ width);
});
tbox.add(obin);